var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function (req, res, next) {
    next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};

    // render the error page
    res.status(err.status || 500);
    res.render('error');
});

var http = require('http')
var spawn = require('child_process').spawn

// 脚本地址
const script = './autoBuild.sh';
// 执行指令的地址
const currentPath = '/www.js/wwwroot/520.yxwjj.top/20200710/test2';
function webhook(req, res, next){

    const password = '123456';
    if (req.headers['x-gitee-token'] === password) {
        console.log('密码正确 开始拉取代码 --- suc');
        rumCommand('sh', [script], function (txt) {
            console.log(`在${currentPath}目录下执行了脚本${script}`);
            console.log(txt);
        });
        res.statusCode = 200;
        res.end('success');
    } else {
        console.log('aaaaa');
    }
    next()
}

app.use(webhook)

function rumCommand(cmd, args, callback) {
    var child = spawn(cmd, args, {
        cwd: currentPath,
    })
    var response = ''
    child.stdout.on('data', function (buffer) {
        response += buffer.toString();
    })
    child.stdout.on('end', function () {
        callback(response)
    })
}


module.exports = app;
